def gen_ExtraPinputDataFromDFs( list_inputDF: list[pd.DataFrame], expVar :list[str], resVar :str, )-> str: """Extra-Pへの入力を文字列型で作成して、それを返す関数 Args: list_inputDF(list[pd.DataFrame]):入力データフレームを格納したリスト expVar(list[str]):説明変数のカラム名のリスト resVar(str):目的変数のカラム名 """ if len(list_inputDF) == 0: warnings.warn(f"len(list_inputDF) == 0") return "-1" elif len(list_inputDF) == 1: return gen_ExtraPinputDataFromDF(inputDF = list_inputDF[0], expVar=expVar, resVar = resVar) else: # PARAMETER ss_PARAMETER :str = "" sorted_expVar :list[str] = sorted(expVar) for exp in sorted_expVar: ss_PARAMETER += f"PARAMETER {exp}\n" # POINTS ss_POINTS:str = "\n" # REGION & METRIC ss_REGIONandMETRIC :str = "\nREGION reg\nMETRIC time\n" # DATA ss_DATA :str = "\n" list_part_of_query :list[str] = [] for elem in expVar: list_part_of_query.append(f"{elem} == {sr[elem]}") query_condition :str = " & ".join(list_part_of_query) base_df :pd.DataFrame = list_inputDF for i , sr in base_df.iterrows(): # TODO # 1. query_condition を用いて入力DFから値を抽出 # 2. DATA列を作成 pass return "-1" def test_gen_ExtraPinputDataFromDFs(): sq1: list[int] = [0, 1, 2, 3, 4] sq2: list[int] = [5, 6, 7, 8, 9] sq3: list[int] = [10, 11, 12, 13, 14] sq_datum1: list[int] = [20, 21, 22, 23, 24] sq_datum2: list[int] = [30, 31, 32, 33, 34] sq_datum3: list[int] = [40, 41, 42, 43, 44] colNames: list[str] = ["sq1", "sq2", "sq3", "data"] datumList :list[list[int]] = [sq1, sq2, sq3, sq_datum1] inputDF1 :pd.DataFrame = pd.DataFrame(index=colNames, data=datumList).T datumList :list[list[int]] = [sq1, sq2, sq3, sq_datum2] inputDF2 :pd.DataFrame = pd.DataFrame(index=colNames, data=datumList).T datumList :list[list[int]] = [sq1, sq2, sq3, sq_datum3] inputDF3 :pd.DataFrame = pd.DataFrame(index=colNames, data=datumList).T expVar :list[str] = ["sq1", "sq2", "sq3"] resVar :str = "data" expected :str = """PARAMETER sq1 PARAMETER sq2 PARAMETER sq3 POINTS ( 0 5 10) POINTS ( 1 6 11 ) POINTS ( 2 7 12 ) POINTS ( 3 8 13 ) POINTS ( 4 9 14 ) REGION reg METRIC time DATA 20 30 40 DATA 21 31 41 DATA 22 32 42 DATA 23 33 43 DATA 24 34 44""" actually = gen_ExtraPinputDataFromDFs(list_inputDF=[inputDF1, inputDF2, inputDF3], expVar=expVar, resVar=resVar) assert expected == actually, f"expected = \n{expected}\nactually = \n{actually}"